# 给定两个以字符串形式表示的非负整数 num1 和 num2，返回 num1 和 num2 的乘积，它们的乘积也表示为字符串形式。

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == "0" or num2 == "0":
            return "0"
        if num1 == "1":
            return num2
        if num2 == "1":
            return num1
        res_list = [0] * (len(num1) + len(num2))
        num1, num2 = num1[::-1], num2[::-1]
        for i in range(0, len(num1)):
            for j in range(0, len(num2)):
                tep = int(num1[i]) * int(num2[j])
                res_list[i+j] += tep % 10
                res_list[i+j+1] += tep // 10
        for index, i in enumerate(res_list):
            if i >= 10:
                res_list[index] = i % 10
                res_list[index+1] += (i // 10)
            res_list[index] = str(res_list[index])
        return "".join(res_list).rstrip("0")[::-1]


a = Solution()
print(a.multiply("123", "456"))
